<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/x86_init.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/x86_init.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0FTTV9YODZfUExBVEZPUk1fSF8w"><span class="b">_ASM_X86_PLATFORM_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0FTTV9YODZfUExBVEZPUk1fSF8w"><span class="b">_ASM_X86_PLATFORM_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">pgtable_types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">bootparam</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> 
<a name="7" /><span class="Maybe">       7:</span> <span class="m">struct</span> <span class="b">mpc_bus</span><span class="f">;</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="m">struct</span> <span class="b">mpc_cpu</span><span class="f">;</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="m">struct</span> <span class="b">mpc_table</span><span class="f">;</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="m">struct</span> <span class="b">cpuinfo_x86</span><span class="f">;</span>
<a name="11" /><span class="Maybe">      11:</span> 
<a name="12" /><span class="Maybe">      12:</span> <span class="k">/**</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> * struct x86_init_mpparse - platform specific mpparse ops</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k"> * @mpc_record:            platform specific mpc record accounting</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k"> * @setup_ioapic_ids:        platform specific ioapic id override</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="k"> * @mpc_apic_id:        platform specific mpc apic id assignment</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * @smp_read_mpc_oem:        platform specific oem mpc table setup</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> * @mpc_oem_pci_bus:        platform specific pci bus setup (default NULL)</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> * @mpc_oem_bus_info:        platform specific mpc bus info</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * @find_smp_config:        find the smp configuration</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> * @get_smp_config:        get the smp configuration</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="m">struct</span> <span class="b">x86_init_mpparse</span> <span class="f">{</span>
<a name="24" /><span class="Maybe">      24:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">mpc_record</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="25" /><span class="Maybe">      25:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">setup_ioapic_ids</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="26" /><span class="Maybe">      26:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">mpc_apic_id</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">mpc_cpu</span> <span class="f">*</span><span class="b">m</span><span class="f">)</span><span class="f">;</span>
<a name="27" /><span class="Maybe">      27:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">smp_read_mpc_oem</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">mpc_table</span> <span class="f">*</span><span class="b">mpc</span><span class="f">)</span><span class="f">;</span>
<a name="28" /><span class="Maybe">      28:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">mpc_oem_pci_bus</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">mpc_bus</span> <span class="f">*</span><span class="b">m</span><span class="f">)</span><span class="f">;</span>
<a name="29" /><span class="Maybe">      29:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">mpc_oem_bus_info</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">mpc_bus</span> <span class="f">*</span><span class="b">m</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">)</span><span class="f">;</span>
<a name="30" /><span class="Maybe">      30:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">find_smp_config</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="31" /><span class="Maybe">      31:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">get_smp_config</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">early</span><span class="f">)</span><span class="f">;</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="f">}</span><span class="f">;</span>
<a name="33" /><span class="Maybe">      33:</span> 
<a name="34" /><span class="Maybe">      34:</span> <span class="k">/**</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="k"> * struct x86_init_resources - platform specific resource related ops</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="k"> * @probe_roms:            probe BIOS roms</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="k"> * @reserve_resources:        reserve the standard resources for the</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k"> *                platform</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="k"> * @memory_setup:        platform specific memory setup</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> *</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> */</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="m">struct</span> <span class="b">x86_init_resources</span> <span class="f">{</span>
<a name="43" /><span class="Maybe">      43:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">probe_roms</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="44" /><span class="Maybe">      44:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">reserve_resources</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="45" /><span class="Maybe">      45:</span>     <span class="m">char</span> <span class="f">*</span><span class="f">(</span><span class="f">*</span><span class="b">memory_setup</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="f">}</span><span class="f">;</span>
<a name="47" /><span class="Maybe">      47:</span> 
<a name="48" /><span class="Maybe">      48:</span> <span class="k">/**</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> * struct x86_init_irqs - platform specific interrupt setup</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> * @pre_vector_init:        init code to run before interrupt vectors</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="k"> *                are set up.</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="k"> * @intr_init:            interrupt init code</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="k"> * @trap_init:            platform specific trap setup</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k"> */</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="m">struct</span> <span class="b">x86_init_irqs</span> <span class="f">{</span>
<a name="56" /><span class="Maybe">      56:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">pre_vector_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="Maybe">      57:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">intr_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="58" /><span class="Maybe">      58:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">trap_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="f">}</span><span class="f">;</span>
<a name="60" /><span class="Maybe">      60:</span> 
<a name="61" /><span class="Maybe">      61:</span> <span class="k">/**</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * struct x86_init_oem - oem platform specific customizing functions</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> * @arch_setup:            platform specific architecure setup</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> * @banner:            print a platform specific banner</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> */</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="m">struct</span> <span class="b">x86_init_oem</span> <span class="f">{</span>
<a name="67" /><span class="Maybe">      67:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">arch_setup</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="Maybe">      68:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">banner</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="f">}</span><span class="f">;</span>
<a name="70" /><span class="Maybe">      70:</span> 
<a name="71" /><span class="Maybe">      71:</span> <span class="k">/**</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> * struct x86_init_paging - platform specific paging functions</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="k"> * @pagetable_init:    platform specific paging initialization call to setup</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="k"> *            the kernel pagetables and prepare accessors functions.</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="k"> *            Callback must call paging_init(). Called once after the</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="k"> *            direct mapping for phys memory is available.</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="k"> */</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="m">struct</span> <span class="b">x86_init_paging</span> <span class="f">{</span>
<a name="79" /><span class="Maybe">      79:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">pagetable_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="f">}</span><span class="f">;</span>
<a name="81" /><span class="Maybe">      81:</span> 
<a name="82" /><span class="Maybe">      82:</span> <span class="k">/**</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="k"> * struct x86_init_timers - platform specific timer setup</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="k"> * @setup_perpcu_clockev:    set up the per cpu clock event device for the</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="k"> *                boot cpu</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="k"> * @tsc_pre_init:        platform function called before TSC init</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="k"> * @timer_init:            initialize the platform timer (default PIT/HPET)</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="k"> * @wallclock_init:        init the wallclock device</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="k"> */</span>
<a name="90" /><span class="Maybe">      90:</span> <span class="m">struct</span> <span class="b">x86_init_timers</span> <span class="f">{</span>
<a name="91" /><span class="Maybe">      91:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">setup_percpu_clockev</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="92" /><span class="Maybe">      92:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">tsc_pre_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="93" /><span class="Maybe">      93:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">timer_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="94" /><span class="Maybe">      94:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">wallclock_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="95" /><span class="Maybe">      95:</span> <span class="f">}</span><span class="f">;</span>
<a name="96" /><span class="Maybe">      96:</span> 
<a name="97" /><span class="Maybe">      97:</span> <span class="k">/**</span>
<a name="98" /><span class="Maybe">      98:</span> <span class="k"> * struct x86_init_iommu - platform specific iommu setup</span>
<a name="99" /><span class="Maybe">      99:</span> <span class="k"> * @iommu_init:            platform specific iommu setup</span>
<a name="100" /><span class="Maybe">     100:</span> <span class="k"> */</span>
<a name="101" /><span class="Maybe">     101:</span> <span class="m">struct</span> <span class="b">x86_init_iommu</span> <span class="f">{</span>
<a name="102" /><span class="Maybe">     102:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">iommu_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="f">}</span><span class="f">;</span>
<a name="104" /><span class="Maybe">     104:</span> 
<a name="105" /><span class="Maybe">     105:</span> <span class="k">/**</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="k"> * struct x86_init_pci - platform specific pci init functions</span>
<a name="107" /><span class="Maybe">     107:</span> <span class="k"> * @arch_init:            platform specific pci arch init call</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="k"> * @init:            platform specific pci subsystem init</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="k"> * @init_irq:            platform specific pci irq init</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="k"> * @fixup_irqs:            platform specific pci irq fixup</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="k"> */</span>
<a name="112" /><span class="Maybe">     112:</span> <span class="m">struct</span> <span class="b">x86_init_pci</span> <span class="f">{</span>
<a name="113" /><span class="Maybe">     113:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">arch_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="114" /><span class="Maybe">     114:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="115" /><span class="Maybe">     115:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">init_irq</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="116" /><span class="Maybe">     116:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_irqs</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="117" /><span class="Maybe">     117:</span> <span class="f">}</span><span class="f">;</span>
<a name="118" /><span class="Maybe">     118:</span> 
<a name="119" /><span class="Maybe">     119:</span> <span class="k">/**</span>
<a name="120" /><span class="Maybe">     120:</span> <span class="k"> * struct x86_init_ops - functions for platform specific setup</span>
<a name="121" /><span class="Maybe">     121:</span> <span class="k"> *</span>
<a name="122" /><span class="Maybe">     122:</span> <span class="k"> */</span>
<a name="123" /><span class="Maybe">     123:</span> <span class="m">struct</span> <span class="b">x86_init_ops</span> <span class="f">{</span>
<a name="124" /><span class="Maybe">     124:</span>     <span class="m">struct</span> <span class="b">x86_init_resources</span>    <span class="b">resources</span><span class="f">;</span>
<a name="125" /><span class="Maybe">     125:</span>     <span class="m">struct</span> <span class="b">x86_init_mpparse</span>        <span class="b">mpparse</span><span class="f">;</span>
<a name="126" /><span class="Maybe">     126:</span>     <span class="m">struct</span> <span class="b">x86_init_irqs</span>        <span class="b">irqs</span><span class="f">;</span>
<a name="127" /><span class="Maybe">     127:</span>     <span class="m">struct</span> <span class="b">x86_init_oem</span>        <span class="b">oem</span><span class="f">;</span>
<a name="128" /><span class="Maybe">     128:</span>     <span class="m">struct</span> <span class="b">x86_init_paging</span>        <span class="b">paging</span><span class="f">;</span>
<a name="129" /><span class="Maybe">     129:</span>     <span class="m">struct</span> <span class="b">x86_init_timers</span>        <span class="b">timers</span><span class="f">;</span>
<a name="130" /><span class="Maybe">     130:</span>     <span class="m">struct</span> <span class="b">x86_init_iommu</span>        <span class="b">iommu</span><span class="f">;</span>
<a name="131" /><span class="Maybe">     131:</span>     <span class="m">struct</span> <span class="b">x86_init_pci</span>        <span class="b">pci</span><span class="f">;</span>
<a name="132" /><span class="Maybe">     132:</span> <span class="f">}</span><span class="f">;</span>
<a name="133" /><span class="Maybe">     133:</span> 
<a name="134" /><span class="Maybe">     134:</span> <span class="k">/**</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="k"> * struct x86_cpuinit_ops - platform specific cpu hotplug setups</span>
<a name="136" /><span class="Maybe">     136:</span> <span class="k"> * @setup_percpu_clockev:    set up the per cpu clock event device</span>
<a name="137" /><span class="Maybe">     137:</span> <span class="k"> * @early_percpu_clock_init:    early init of the per cpu clock event device</span>
<a name="138" /><span class="Maybe">     138:</span> <span class="k"> */</span>
<a name="139" /><span class="Maybe">     139:</span> <span class="m">struct</span> <span class="b">x86_cpuinit_ops</span> <span class="f">{</span>
<a name="140" /><span class="Maybe">     140:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">setup_percpu_clockev</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="141" /><span class="Maybe">     141:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">early_percpu_clock_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="142" /><span class="Maybe">     142:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">fixup_cpu_id</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">cpuinfo_x86</span> <span class="f">*</span><span class="b">c</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">)</span><span class="f">;</span>
<a name="143" /><span class="Maybe">     143:</span> <span class="f">}</span><span class="f">;</span>
<a name="144" /><span class="Maybe">     144:</span> 
<a name="145" /><span class="Maybe">     145:</span> <span class="m">struct</span> <span class="b">timespec</span><span class="f">;</span>
<a name="146" /><span class="Maybe">     146:</span> 
<a name="147" /><span class="Maybe">     147:</span> <span class="k">/**</span>
<a name="148" /><span class="Maybe">     148:</span> <span class="k"> * struct x86_platform_ops - platform specific runtime functions</span>
<a name="149" /><span class="Maybe">     149:</span> <span class="k"> * @calibrate_tsc:        calibrate TSC</span>
<a name="150" /><span class="Maybe">     150:</span> <span class="k"> * @get_wallclock:        get time from HW clock like RTC etc.</span>
<a name="151" /><span class="Maybe">     151:</span> <span class="k"> * @set_wallclock:        set time back to HW clock</span>
<a name="152" /><span class="Maybe">     152:</span> <span class="k"> * @is_untracked_pat_range    exclude from PAT logic</span>
<a name="153" /><span class="Maybe">     153:</span> <span class="k"> * @nmi_init            enable NMI on cpus</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="k"> * @i8042_detect        pre-detect if i8042 controller exists</span>
<a name="155" /><span class="Maybe">     155:</span> <span class="k"> * @save_sched_clock_state:    save state for sched_clock() on suspend</span>
<a name="156" /><span class="Maybe">     156:</span> <span class="k"> * @restore_sched_clock_state:    restore state for sched_clock() on resume</span>
<a name="157" /><span class="Maybe">     157:</span> <span class="k"> * @apic_post_init:        adjust apic if neeeded</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="k"> */</span>
<a name="159" /><span class="Maybe">     159:</span> <span class="m">struct</span> <span class="b">x86_platform_ops</span> <span class="f">{</span>
<a name="160" /><span class="Maybe">     160:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="f">(</span><span class="f">*</span><span class="b">calibrate_tsc</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="161" /><span class="Maybe">     161:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">get_wallclock</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="162" /><span class="Maybe">     162:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">set_wallclock</span><span class="f">)</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="163" /><span class="Maybe">     163:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">iommu_shutdown</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="164" /><span class="Maybe">     164:</span>     <span class="m">bool</span> <span class="f">(</span><span class="f">*</span><span class="b">is_untracked_pat_range</span><span class="f">)</span><span class="f">(</span><span class="b">u64</span> <span class="b">start</span><span class="f">,</span> <span class="b">u64</span> <span class="b">end</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="Maybe">     165:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">nmi_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="166" /><span class="Maybe">     166:</span>     <span class="m">unsigned</span> <span class="m">char</span> <span class="f">(</span><span class="f">*</span><span class="b">get_nmi_reason</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="167" /><span class="Maybe">     167:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">i8042_detect</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="168" /><span class="Maybe">     168:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">save_sched_clock_state</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="169" /><span class="Maybe">     169:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">restore_sched_clock_state</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="170" /><span class="Maybe">     170:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">apic_post_init</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="171" /><span class="Maybe">     171:</span> <span class="f">}</span><span class="f">;</span>
<a name="172" /><span class="Maybe">     172:</span> 
<a name="173" /><span class="Maybe">     173:</span> <span class="m">struct</span> <span class="b">pci_dev</span><span class="f">;</span>
<a name="174" /><span class="Maybe">     174:</span> <span class="m">struct</span> <span class="b">msi_msg</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span> <span class="m">struct</span> <span class="b">msi_desc</span><span class="f">;</span>
<a name="176" /><span class="Maybe">     176:</span> 
<a name="177" /><span class="Maybe">     177:</span> <span class="m">struct</span> <span class="b">x86_msi_ops</span> <span class="f">{</span>
<a name="178" /><span class="Maybe">     178:</span>     <span class="m">int</span> <span class="f">(</span><span class="f">*</span><span class="b">setup_msi_irqs</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">pci_dev</span> <span class="f">*</span><span class="b">dev</span><span class="f">,</span> <span class="m">int</span> <span class="b">nvec</span><span class="f">,</span> <span class="m">int</span> <span class="b">type</span><span class="f">)</span><span class="f">;</span>
<a name="179" /><span class="Maybe">     179:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">compose_msi_msg</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">pci_dev</span> <span class="f">*</span><span class="b">dev</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span>
<a name="180" /><span class="Maybe">     180:</span>                 <span class="m">unsigned</span> <span class="m">int</span> <span class="b">dest</span><span class="f">,</span> <span class="m">struct</span> <span class="b">msi_msg</span> <span class="f">*</span><span class="b">msg</span><span class="f">,</span>
<a name="181" /><span class="Maybe">     181:</span>                    <span class="b">u8</span> <span class="b">hpet_id</span><span class="f">)</span><span class="f">;</span>
<a name="182" /><span class="Maybe">     182:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">teardown_msi_irq</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="183" /><span class="Maybe">     183:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">teardown_msi_irqs</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">pci_dev</span> <span class="f">*</span><span class="b">dev</span><span class="f">)</span><span class="f">;</span>
<a name="184" /><span class="Maybe">     184:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">restore_msi_irqs</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">pci_dev</span> <span class="f">*</span><span class="b">dev</span><span class="f">,</span> <span class="m">int</span> <span class="b">irq</span><span class="f">)</span><span class="f">;</span>
<a name="185" /><span class="Maybe">     185:</span>     <span class="m">int</span>  <span class="f">(</span><span class="f">*</span><span class="b">setup_hpet_msi</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">irq</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">id</span><span class="f">)</span><span class="f">;</span>
<a name="186" /><span class="Maybe">     186:</span>     <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="f">(</span><span class="f">*</span><span class="b">msi_mask_irq</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">msi_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">mask</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">flag</span><span class="f">)</span><span class="f">;</span>
<a name="187" /><span class="Maybe">     187:</span>     <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="f">(</span><span class="f">*</span><span class="b">msix_mask_irq</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">msi_desc</span> <span class="f">*</span><span class="b">desc</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="b">flag</span><span class="f">)</span><span class="f">;</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="f">}</span><span class="f">;</span>
<a name="189" /><span class="Maybe">     189:</span> 
<a name="190" /><span class="Maybe">     190:</span> <span class="m">struct</span> <span class="b">IO_APIC_route_entry</span><span class="f">;</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="m">struct</span> <span class="b">io_apic_irq_attr</span><span class="f">;</span>
<a name="192" /><span class="Maybe">     192:</span> <span class="m">struct</span> <span class="b">irq_data</span><span class="f">;</span>
<a name="193" /><span class="Maybe">     193:</span> <span class="m">struct</span> <span class="b">cpumask</span><span class="f">;</span>
<a name="194" /><span class="Maybe">     194:</span> 
<a name="195" /><span class="Maybe">     195:</span> <span class="m">struct</span> <span class="b">x86_io_apic_ops</span> <span class="f">{</span>
<a name="196" /><span class="Maybe">     196:</span>     <span class="m">void</span>        <span class="f">(</span><span class="f">*</span><span class="b">init</span><span class="f">)</span>   <span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="197" /><span class="Maybe">     197:</span>     <span class="m">unsigned</span> <span class="m">int</span>    <span class="f">(</span><span class="f">*</span><span class="b">read</span><span class="f">)</span>   <span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">apic</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">reg</span><span class="f">)</span><span class="f">;</span>
<a name="198" /><span class="Maybe">     198:</span>     <span class="m">void</span>        <span class="f">(</span><span class="f">*</span><span class="b">write</span><span class="f">)</span>  <span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">apic</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">reg</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">value</span><span class="f">)</span><span class="f">;</span>
<a name="199" /><span class="Maybe">     199:</span>     <span class="m">void</span>        <span class="f">(</span><span class="f">*</span><span class="b">modify</span><span class="f">)</span> <span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">apic</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">reg</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">value</span><span class="f">)</span><span class="f">;</span>
<a name="200" /><span class="Maybe">     200:</span>     <span class="m">void</span>        <span class="f">(</span><span class="f">*</span><span class="b">disable</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="201" /><span class="Maybe">     201:</span>     <span class="m">void</span>        <span class="f">(</span><span class="f">*</span><span class="b">print_entries</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">apic</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">nr_entries</span><span class="f">)</span><span class="f">;</span>
<a name="202" /><span class="Maybe">     202:</span>     <span class="m">int</span>        <span class="f">(</span><span class="f">*</span><span class="b">set_affinity</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">irq_data</span> <span class="f">*</span><span class="b">data</span><span class="f">,</span>
<a name="203" /><span class="Maybe">     203:</span>                     <span class="m">const</span> <span class="m">struct</span> <span class="b">cpumask</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span>
<a name="204" /><span class="Maybe">     204:</span>                     <span class="m">bool</span> <span class="b">force</span><span class="f">)</span><span class="f">;</span>
<a name="205" /><span class="Maybe">     205:</span>     <span class="m">int</span>        <span class="f">(</span><span class="f">*</span><span class="b">setup_entry</span><span class="f">)</span><span class="f">(</span><span class="m">int</span> <span class="b">irq</span><span class="f">,</span> <span class="m">struct</span> <span class="b">IO_APIC_route_entry</span> <span class="f">*</span><span class="b">entry</span><span class="f">,</span>
<a name="206" /><span class="Maybe">     206:</span>                        <span class="m">unsigned</span> <span class="m">int</span> <span class="b">destination</span><span class="f">,</span> <span class="m">int</span> <span class="b">vector</span><span class="f">,</span>
<a name="207" /><span class="Maybe">     207:</span>                        <span class="m">struct</span> <span class="b">io_apic_irq_attr</span> <span class="f">*</span><span class="b">attr</span><span class="f">)</span><span class="f">;</span>
<a name="208" /><span class="Maybe">     208:</span>     <span class="m">void</span>        <span class="f">(</span><span class="f">*</span><span class="b">eoi_ioapic_pin</span><span class="f">)</span><span class="f">(</span><span class="m">int</span> <span class="b">apic</span><span class="f">,</span> <span class="m">int</span> <span class="b">pin</span><span class="f">,</span> <span class="m">int</span> <span class="b">vector</span><span class="f">)</span><span class="f">;</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="f">}</span><span class="f">;</span>
<a name="210" /><span class="Maybe">     210:</span> 
<a name="211" /><span class="Maybe">     211:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">x86_init_ops</span> <span class="b">x86_init</span><span class="f">;</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">x86_cpuinit_ops</span> <span class="b">x86_cpuinit</span><span class="f">;</span>
<a name="213" /><span class="Maybe">     213:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">x86_platform_ops</span> <span class="b">x86_platform</span><span class="f">;</span>
<a name="214" /><span class="Maybe">     214:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">x86_msi_ops</span> <span class="b">x86_msi</span><span class="f">;</span>
<a name="215" /><span class="Maybe">     215:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">x86_io_apic_ops</span> <span class="b">x86_io_apic_ops</span><span class="f">;</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">x86_init_noop</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="217" /><span class="Maybe">     217:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">x86_init_uint_noop</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">unused</span><span class="f">)</span><span class="f">;</span>
<a name="218" /><span class="Maybe">     218:</span> 
<a name="219" /><span class="True">     219:</span> <span class="f">#</span><span class="n">endif</span>
<a name="220" /><span class="True">     220:</span> </pre>
  </body>
</html>
